// 引入存放当前reducer模块的数据和执行操作
import handleArr from "./index"

const reducer = (state={...handleArr.state},action:{type:string,val:number})=>{ // val接收的是组件通过dispath操作当前仓库时传递过来的数据
    const newState = JSON.parse(JSON.stringify(state))

    /* switch(action.type){    // action.type接收的是组件通过dispath操作当前仓库时传递过来的type动作类型
        case "sarrpush":
            handleArr.actions.sarrpush(newState,action)
            break;
        default:
            break;
    } */
    // 上面的switch方法过于麻烦，所以可以替换成下面这种方式
    for(const key in handleArr.actionNames){  // 遍历handleNum仓库中的所以操作类型名称
        // key 是属性名
        // 如果用户要执行的操作类型名称与handleNum仓库中的某个操作类型名称相等
        if(action.type === handleArr.actionNames[key]){
            // 调用handleNum仓库中操作类型名称对应的操作方法
            handleArr.actions[handleArr.actionNames[key]](newState,action)
            break;
        }
    }

    return newState
}

export default reducer